import tkinter as tk
import random

class NumberSearchApp:
    def __init__(self, root):
        self.root = root
        self.root.title("数字查找程序")

        # 存储随机生成的目标数字
        self.target_number = None
        # 记录当前数字区间，初始为 [1, 100]
        self.current_range = [1, 100]

        # 第一行：开始按钮和重新按钮
        self.start_button = tk.Button(root, text="开始", command=self.start_search)
        self.start_button.pack(side=tk.LEFT, padx=10, pady=10)

        self.reset_button = tk.Button(root, text="重新", command=self.reset_search)
        self.reset_button.pack(side=tk.LEFT, padx=10, pady=10)

        # 第二行：输入每轮猜测数字
        self.input_label = tk.Label(root, text="输入你猜测的数字:")
        self.input_label.pack(side=tk.LEFT, padx=10, pady=10)

        self.input_entry = tk.Entry(root)
        self.input_entry.pack(side=tk.LEFT, padx=10, pady=10)

        # 结果显示标签
        self.result_label = tk.Label(root, text="")
        self.result_label.pack(pady=10)

        # 区间显示标签
        self.range_label = tk.Label(root, text="当前区间: [1, 100]")
        self.range_label.pack(pady=10)

    def start_search(self):
        # 若目标数字未生成，先随机生成一个 1 到 100 之间的数字
        if self.target_number is None:
            self.target_number = random.randint(1, 100)
        try:
            guess = int(self.input_entry.get())
            if self.current_range[0] <= guess <= self.current_range[1]:
                if guess == self.target_number:
                    result_text = f"恭喜你，猜对了！目标数字就是 {self.target_number}。"
                    self.target_number = None  # 猜对后重置目标数字，以便下一轮
                    self.current_range = [1, 100]  # 重置区间
                elif guess < self.target_number:
                    result_text = f"猜的数字太小了，再试试。"
                    self.current_range[0] = guess + 1
                else:
                    result_text = f"猜的数字太大了，再试试。"
                    self.current_range[1] = guess - 1
                self.result_label.config(text=result_text)
                self.update_range_label()
            else:
                self.result_label.config(text=f"输入的数字不在当前区间 {self.current_range[0]}-{self.current_range[1]} 内，请重新输入。")
        except ValueError:
            self.result_label.config(text="输入无效，请输入一个有效的整数。")

    def update_range_label(self):
        range_text = f"当前区间: [{self.current_range[0]}, {self.current_range[1]}]"
        self.range_label.config(text=range_text)

    def reset_search(self):
        self.input_entry.delete(0, tk.END)
        self.result_label.config(text="")
        self.target_number = None  # 重置目标数字
        self.current_range = [1, 100]  # 重置区间
        self.update_range_label()


if __name__ == "__main__":
    root = tk.Tk()
    app = NumberSearchApp(root)
    root.mainloop()